package com.ruoyi.web.controller.test;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.system.service.ISysUserService;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.*;

/**
 * 用户信息
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/testUser")
public class SysUserTestController extends BaseController {
    @Autowired
    private ISysUserService userService;

    /**
     * 获取用户列表
     */
    @GetMapping("/list")
    public TableDataInfo list(SysUser user) {
        startPage();
        List<SysUser> list = userService.selectUserList(user);
        return getDataTable(list);
    }

    @PostMapping("/submitInfoToServer")
    public String submitInfoToServer(@RequestBody SysUser user) {
        String userName = user.getUserName();
        Long userId = user.getUserId();
        System.out.println(userName);
        System.out.println(userId);
        return "传入的数据是:username:" + userName + ",userId:" + userId;
    }

    @GetMapping("/getSwiperUrlList")
    public List<String> getSwiperUrlList(SysUser user) {
        List<String> list = new ArrayList<>();
        list.add("/images/轮播1.png");
        list.add("/images/轮播2.png");
        list.add("/images/轮播3.png");
        return list;
    }

    @GetMapping("/getIconList")
    public List<String> getIconList(SysUser user) {
        List<String> list = new ArrayList<>();
        list.add("/images/sharpicons_baguette.png");
        list.add("/images/sharpicons_bread.png");
        list.add("/images/sharpicons_coke.png");
        list.add("/images/sharpicons_drink-3.png");
        list.add("/images/sharpicons_margarita.png");
        list.add("/images/sharpicons_meat.png");
        list.add("/images/sharpicons_pasta.png");
        list.add("/images/sharpicons_pizza-slice.png");
        list.add("/images/sharpicons_sausage.png");

        return list;
    }


    /**
     * 将 RGB 颜色值转换为十六进制字符串格式。
     *
     * @param red   红色分量（0-255）
     * @param green 绿色分量（0-255）
     * @param blue  蓝色分量（0-255）
     * @return 表示颜色的十六进制字符串（例如：#FF5733）
     */
    public static String toHexColor(int red, int green, int blue) {
        // 确保每个颜色分量在有效范围内
        if (red < 0 || red > 255 || green < 0 || green > 255 || blue < 0 || blue > 255) {
            throw new IllegalArgumentException("颜色分量必须在 0 到 255 之间");
        }

        // 将每个颜色分量转换为两位十六进制字符串，并拼接成最终的十六进制颜色字符串
        String hexColor = String.format("#%02X%02X%02X", red, green, blue);
        return hexColor;
    }


    @GetMapping("/getColor")
    public List<String> getColor() {
        List<String> list = new ArrayList<>();
        // 示例用法
        for (int i = 0; i < 10; i++) {
            int red = (int)(Math.random()*255);
            int green = (int)(Math.random()*255);
            int blue = (int)(Math.random()*255);
            String hexColor = toHexColor(red, green, blue);
            System.out.println("十六进制颜色字符串: " + hexColor);  // 输出: #FF5733
            list.add(hexColor);
        }
        return list;

    }




//    @GetMapping("/generateWordTable")
//    public Object generateWordTable() {
//        Object content = null;
//        try {
//            InputStream is1 = new ClassPathResource(TEMPLATE_FILE_NAME).getInputStream();
//            XWPFDocument doc1 = new XWPFDocument(is1);
//            // 将文档写入字节数组，以便可以作为 MultipartFile 发送
//
////          a种处理
//            InputStream is2 = new ClassPathResource(TEMPLATE_FILE_NAME).getInputStream();
//            XWPFDocument doc2 = new XWPFDocument(is2);
//
//            XWPFDocument mergedDoc = new XWPFDocument();
//            // 复制第一个文档的表格到新文档
//            copyTables(doc1, mergedDoc);
//
//            // 复制第二个文档的表格到新文档（通常会在第一个文档表格之后）
//            copyTables(doc2, mergedDoc);
//
//            // 将合并后的文档写入到一个输出流中（这里为了演示，我们写入到ByteArrayOutputStream）
//            ByteArrayOutputStream baos = new ByteArrayOutputStream();
//            mergedDoc.write(baos);
//
//            // 现在，baos包含了合并后的文档的字节内容
//            byte[] mergedDocumentBytes = baos.toByteArray();
//
//            content = sendRequest(mergedDocumentBytes);
//
//        } catch (IOException e) {
//            System.err.println("读取或处理文件时发生错误");
//            e.printStackTrace();
//            // 处理异常，可能需要返回错误或进行其他处理
//        }
//        return content;
//    }

}
